package net.lzzy.practices.services;


import net.lzzy.practices.entities.User;

import java.util.List;
import java.util.UUID;

/**
 * @
 * @author 1
 */
public interface UserService {


    /**
     * 登陆时检查用户名和密码是否正确
     * @param username
     * @param password
     * @return 检查正确则返回user否则围殴null
     */
    User check(String username, String password);

    /**
     * 获取salt
     * @param username
     * @return
     */
    String getSalt(String username);

    /**
     * 注册用户
     * @param user
     * @return 成功返回user
     */
    User register(User user);

    /**
     * 判断用户是否存在
     * @param username
     * @return 布尔值，是否占用
     */
    boolean isUsernameOccupied(String username);

    /**
     *  获取所有用户
     * @return 用户集合
     */

    List<User> get();

    /**
     * 分页获取所有用户
     * @param page 当前页码
     * @param size 每页数据大小
     * @return
     */
    List<User> get(int page,int size);


    /**
     * 统计用户数量
     * @return 用户数量
     */
    Integer count();

    /**
     *
     * @param kw
     * @return
     */
    List<User> search(String kw);

    /**
     * 获取申请教师资格的用户
     * @param applying true表示申请教师用户
     * @return
     */
    List<User> getByApplyTeacher(boolean applying);

    /**
     * 审批通过教师资格
     * @param id
     * @return
     */
    User applyTeacher(UUID id);

    /**
     *  审核不通过
      * @param id
     * @return
     */
    User declineTeacher(UUID id);

    /**
     *  禁止该用户登录
     * @param id
     * @return
     */
    User banUser(UUID id);

    /**
     *
     * @param id  用户ID
     * @return 用户对象
     */
    User getById(UUID id);
}
